package cn.itcast.nems.studentrecord.dao.entity;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.*;

import cn.itcast.nems.common.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 重读凭单
 * </p>
 *
 * @author 刘曙
 * @since 2023-12-12
 */
@Getter
@Setter
@TableName("e2_journal_repeat")
public class JournalRepeat extends BaseEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 3410926957582885011L;

    /**
     * 主键ID;前缀+6位随机字符（大写字母+数字），示例：CD-I2Z8D8
     */
    @TableId(value = "id",type = IdType.INPUT)
    private String id;

    /**
     * 业务实际办理日期
     */
    private LocalDateTime bizDate;

    /**
     * 原学籍ID
     */
    private String originStudentRecordId;

    /**
     * 原班级ID
     */
    private Integer originClazzId;

    /**
     * 原班级名称
     */
    private String originClazzName;

    /**
     * 原学籍的出班日期
     */
    private LocalDate originClazzOutDate;
    
    /**
     * 出班情况；枚举值：SETTLEMENT_BEFORE｜结课前重读、SETTLEMENT_AFTER｜结课后重读
     */
    private String originClazzOutType;

    /**
     * 重读到的班级ID
     */
    private Integer targetClazzId;

    /**
     * 重读到的班级名称
     */
    private String targetClazzName;

    /**
     * 重读到的班级进班日期
     */
    private LocalDate targetClazzInDate;

    /**
     * 重读到的班级执行价格
     */
    private Integer targetClazzPrice;

    /**
     * 重读金额;无重读费用时，可以为零
     */
    private Integer amount;

    /**
     * 重读原因CODE;来自字典表
     */
    private String reasonCode;

    /**
     * 重读原因说明;来自字典表
     */
    private String reasonDescription;

    /**
     * 状态;枚举值：草稿｜DRAFT、待审批｜PENDING、审批中｜APPROVING、审批未通过｜REJECTED、已完成｜FINISHED
     */
    private String state;

    /**
     * 备注
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String remark;

    /**
     * 特殊申请;枚举值：非特殊｜0、特殊｜1
     */
    private Boolean specialFlag;

    /**
     * 重读生成的学籍ID;在审批通过，生成订单后更新
     */
    private String studentRecordId;
    
    /**
     * 重读生成的订单ID;在审批通过，生成订单后更新
     */
    private String orderId;
    
}
